/**
 *
 *  内部类：
 *  2.静态内部类/实例内部类
 */
class OuterClass2 {
    public int date1 = 1;
    private int date2 = 2;
    private static int date3 = 3;


     class InnerClass2 {
         public int dage1 = 1111;
        public int date4 = 4;
        private int date5 = 5;
        //常量是在程序编译的时候就能确定的
        private static final int date6 = 6; //实例内部类中不能有Static修饰的成员，如果非要有 加一个final

        public void func() {
            //当外部类与内部类有重名的成员变量时：
            System.out.println(date1);//输出内部类的 date1
            System.out.println(OuterClass2.this.date1);//输出外部类的 this

            System.out.println(date2);
            System.out.println(date3);
            System.out.println(this.date4);//输出的是内部类的this
            System.out.println(date5);
            System.out.println(date6);
        }


    }


    public void func() {
        InnerClass2 innerClass2 = new InnerClass2(); //调用实例内部类成员需要通过对象的引用访问！！
        System.out.println(date1);
        System.out.println(date2);
        System.out.println(date3);
        System.out.println(innerClass2.date4);
        System.out.println(innerClass2.date5);
        System.out.println(InnerClass2.date6);//静态的通过类名就可以访问了!!
    }

}


public class Test1 {
    public static void main(String[] args) {
        OuterClass2 outerClass2 = new OuterClass2();
        OuterClass2.InnerClass2 innerClass2 = outerClass2.new InnerClass2(); // 内部类实现比较麻烦，需要外部类的对象
        innerClass2.func();//打印内部类
        System.out.println("========");
        outerClass2.func();//打印外部类
    }
}
